package com.ssd.sms;

import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.teaopenapi.models.Config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 短信服务客户端配置类
 * 该类用于配置阿里云短信服务（SMS）的客户端
 * 依赖于SmsProperties配置属性类，并且只有当配置文件中存在aliyun.sms.endpoint属性时才会创建客户端
 */
@Configuration
@EnableConfigurationProperties(SmsProperties.class)
@ConditionalOnProperty(name = "aliyun.sms.endpoint")
public class SmsClientConfiguration {

    /**
     * 注入短信服务配置属性
     */
    @Autowired
    private SmsProperties properties;

    /**
     * 创建并配置阿里云短信服务客户端
     * 该方法会根据配置属性初始化Config对象，并使用该配置创建Client对象
     * 如果创建过程中抛出异常，将打印异常信息并重新抛出运行时异常
     *
     * @return 配置好的阿里云短信服务客户端
     * @throws RuntimeException 如果客户端创建过程中出现异常
     */
    @Bean
    public Client createClient() {
        Config config = new Config();
        config.setEndpoint(properties.getEndpoint());
        config.setAccessKeyId(properties.getAccessKeyId());
        config.setAccessKeySecret(properties.getAccessKeySecret());
        try {
            return new Client(config);
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
}

